home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-05-09 | 18.2 KB | 470 lines | [TEXT/MPS ] |
- SourceBug 1.0b1 Release Notes
- Mike Lockwood
- April 8, 1991
-
-
- SourceBug is now feature frozen for the Beta release on the May E.T.O. Further
- minor enhancements and improvements may occur after the Beta release.
- Major enhancements will be postponed until after SourceBug 1.0 final is released.
-
-
- SourceBug 1.0b1 is compatible with MPW 3.2 (from either the E.T.O #1 or E.T.O #2)
- CDs, or MPW 3.2b6). SourceBug requires System 6.0.X with MultiFinder 6.1b9, or System 7.0b4 or
- later. System 7.0b5 or later is recommended if available, since there are some
- annoying bugs in 7.0b4 (mainly, lost activate events, and a crash when stepping over SFGetFile).
- SourceBug will not work with releases of System 7 before 7.0b4.
-
-
-
-
- 1.0b1 Changes
-
- • SourceBug now detects and corrects for PascalObjects mistakenly described
- as C++ pointer-based objects in the Sym File. This problem occurs
- frequently in MacApp 3.0, due to forward references of classes in the
- MacApp header files.
-
- • Removed an improper assumption about the existence of Color QuickDraw.
- SourceBug will now run on the Plus, SE, Classic, and Portable!
-
- • Reenabled the code that evaluates variables that reside in 68881/68882
- data registers (FP0 - FP7). Do not use SourceBug with System 7.0b4 or
- 7.0b5 if you want to use this feature. There were some problems with the
- Process Manager that weren't fixed until 7.0b6.
-
- • The floating point data registers were moved to a separate window, since
- many programmers don't use them.
-
- • Fixed another bug that caused TRAP #5 (breakpoint) instructions to appear
- in the disassembly.
-
-
- 1.0d31 Changes
-
- • Fixed a bug that caused SourceBug to crash when handling a crash in
- another program.
-
- • Increased preferred size in 'SIZE' resource from 2000K to 2500K.
- This was done because debugging MacApp 3.0 require more memory, and this
- release is intended for distibution with MacApp 3.0a1.
-
-
- 1.0d30 Changes
-
- • Added support for evaluating local variables located in FPU registers, and added the
- FPU data registers FP0 - FP7 to the registers window. However, this was disabled in
- 1.0d30 due a bug in the 7.0b5 Process Manager.
-
- • The status register is now displayed in the Registers Window as five check boxes.
- This allows much easier manipulation of the 'X', 'N', 'Z', 'V', and 'C' bits in the CCR.
- Messing with the supervisor or trace bits is no longer allowed.
-
- • Fixed a bug introduced in 1.0d29 that kept the %?Anon unit and anonymous modules such as
- glue code from being displayed in the Browser Window.
-
- • SourceBug now handles out-of-date source files differently. The user is now given the
- choice of:
- 1) Using the source anyway, even though the modification date does not match the symbolics,
- 2) Viewing assembler only, or
- 3) Locating the correct version of the source.
-
- • Reenabled the "View as Str255" option for StringHandles. This was inadvertantly disabled
- in 1.0d29.
-
- • Fixed the evaluation of TLists and TSortedLists in MacApp 3.0. The elements of a TList
- should now be visible.
-
- • Sped up the drawing of the text in Code Views.
-
- • Fixed some breakpoint related bugs that were introduced while rewriting some of the
- breakpoint code between 1.0d28 and 1.0d29. These bugs in 1.0d29 sometimes resulted in:
- 1) crashes when the target application was terminated,
- 2) breakpoints not being reenabled when resuming an application, and
- 3) TRAP #5 instructions (breakpoints) showing up in disassembled code.
-
-
-
- 1.0d29 Changes
-
- • Fixed a bug that caused occasional crashes when setting breakpoints.
-
- • Made a minor change to the inspector hooks so the "New Inspector Window"
- command works with MacApp 3.0d10.
-
- • Added the "View as Fixed" and "View as Fract" options.
-
- • Added support for the new "SysBreak", "SysBreakStr", and "SysBreakFunc"
- traps defined in Types.h.
-
- • Improved handling of SysErrors. SourceBug is now able to display a stack crawl
- from the point at which SysError was called. A call to SysError no longer
- automatically terminates the target application.
-
- • Breakpoints are now displayed with 12 pixel icons. This change was made so
- two breakpoints in a row do not overlap when drawn on the side of the code view.
-
- • Fixed a problem that caused "View as Str255" not to work in certain cases.
- In particular, you can now evaluate MacApp 3.0 Str255 classes by using
- "View as Str255" on the fStr field in the Str255 class.
-
- • Fixed another bug that caused the evaluation of register based shorts or
- OSErrs to be wrong in certain cases.
-
- • Breakpoints are now removed when SourceBug is entered, and restored when the
- target application is resumed. This greatly simplifies disassembling code,
- the stack crawl, and finding saved registers on the stack. It also solves
- a problem killing MacApp 3.0 applications. SourceBug 1.0d28 would crash due
- to a reentrancy problem related to MacApp's _ExitToShell patch.
-
- • Fixed a problem that caused SourceBug to crash if the Sym file contained a
- garbage name for a module.
-
- • Rewrote the %_MethTables parsing code so it no longer relys on the ClassInfo
- table. This should solve the infamous "%_MethTables parsing error".
-
- • Fixed a bug that caused the program counter to be displayed one line ahead
- when at statements that are only 2 bytes long (such as A-Traps without parameters).
-
- • Added better error handling when the prefs file is corrupted. Old versions
- would fail with a disk error on startup if the prefs file was corrupted.
-
-
-
- 1.0d28 Changes
-
- • Reorganized some of SourceBug's internal data structures to optimize read-in
- time. SourceBug 1.0d28 takes less than half the time than earlier versions
- to open medium sized MacApp applications.
-
- • Refixed the problem that caused breakpoints and the program counter to be
- displayed on the wrong line when displaying assembler source.
-
-
- 1.0d27 Changes
-
- • Fixed a bug that caused the code view selection to be drawn improperly
- when selecting and autoscrolling.
-
- • If the Sym file has the full path name for a source file, SourceBug now
- uses only the file name for the source file. This allows the developer
- to debug her application on a different computer than the computer on
- which it was built.
-
- • Fixed a bug that caused a crash when displaying large character arrays.
-
- • Fixed a bug that sometimes caused breakpoints set in source code to be
- invisible when viewed in assembler.
-
-
- 1.0d26 Changes
-
- • When toggling between alphabetical and hierarchical listing of classes and
- compilation units, the selected class or compilation unit is retained.
-
- • SourceBug now shows class names in variable views when displaying a handle
- to another object.
-
- • SourceBug now reads the entire name and module tables of the Sym file
- before read time. This results in a 20% - 40% cut in read in time.
- These tables make up about 25% - 30% of the sym file.
-
- • Added "View As" options. These allow you to display integers as decimals
- or hexadecimals, and strings as either C-Strings or Pascal Strings.
- Warning: This feature has not been fully debugged!
-
- • Added clipboard support. You can now copy the selected text in a code view
- or the contents of a variable view to the clipboard.
-
- • Implemented the "Select All" command for code views.
-
- • Stopped using validMacsBugSymbol for reading class names from the
- %_MethTables segment. validMacsBugSymbol was not always recognizing
- the class names as valid.
-
-
-
- 1.0d25 Changes
-
- • Fixed a bug that was introduced as a side effect in 1.0d24.
- Clicking in the side view caused the breakpoint to be set one line above
- where the user intended to set it.
-
- • Fixed another bug that occured when evaluating TLists.
-
- • Fixed a bug evaluating fields of objects in C++ code (such as evaluating
- fDocument in the source for a TView method written in C++).
-
-
- 1.0d24 Changes
-
- • Added compilation units to the class list in the browser window.
- Now routines that are not classes of pascal-style objects are grouped
- according to compilation unit. (The compilation unit of a routine is
- the pascal UNIT that contains it. If a routine is not in a pascal UNIT,
- the compilation unit is the source file that contains its implementation).
-
- • SourceBug now keeps a stack of places where it steps over JSRs. This means
- that if you step over a function call and hit a breakpoint while in the
- in the function you stepped over, you can execute the "Go" command and
- you will stop again after the function call you were stepping over.
- Since SourceBug keeps these in a stack, SourceBug remembers multiple functions
- you are stepping over.
-
- • Fixed a bug that occured when evaluating TLists.
-
- • Modified the 'obit' AppleEvent handler to reflect changes in the 7.0b4
- Process Manager
-
- • Made minor changes to the source so the SourceBug source code will compile
- with MPW 3.2b6
-
- • SourceBug now uses validMacsBugSymbol (from DisasmLookup.h) to read class
- names in the %_MethTables segment. This routine provides better error
- checking than previous SourceBugs.
-
- • Added an failure message that will occur if the %_MethTables segment is invalid.
-
- • Fixed a bug that caused breakpoints and the PC to be displayed one line too
- high in assembler source code.
-
- • Fixed a problem that occured when stepping over %_OBNEW calls
-
- • Disabled "Enter Low-level Debugger" when the pc is at a breakpoint.
- The user is told to clear or step past the breakpoint before entering
- the low-level debugger.
-
-
- 1.0d23 Changes
-
- • Added support for handling SysErrors.
-
- • Fixed a bug that occured when evaluating TLists.
-
-
-
- 1.0d22 Changes
-
- • Added support for evaluating local variables of routines further up in the
- stack crawl. Evaluation of register-based locals further up the stack is
- now possible in most cases
-
- • Removed several bugs that caused evaluation to be inaccurate.
-
- • Removed the AVL tree classes. Performance testing showed they were only
- providing a 10% improvement in parse time and were significantly increasing
- the size of many classes, increasing overall memory requirements.
- A future version of SourceBug will use some other optimization techniques.
-
- • Object creation and deletion events are now cached so a shallow context
- switch is not required each time an object is created or deleted. 1.0d21
- was much slower than 1.0d19 or 1.0d20 because of this problem.
-
- • Fixed a bug that occasionally caused a crash when closing the browser window.
-
-
- 1.0d21 Changes
-
- • SourceBug now performs a shallow context switch when handling exceptions
- (or breakpoints) in the target application. The decision whether or not
- to handle the exception is made in this state, since making this decision
- may require some calculation that results in Memory Manager calls.
-
-
- 1.0d20 Changes
-
- • Modified low-level Process Manager interface code for 7.0b4 compatibility.
-
- • Reenabled support for System 7 Virtual Memory. Debuggers now work with
- VM under System 7.0b4.
-
- • Added the "Find Source for Code" feature, which displays the name of
- the source file for the foremost code view. This feature is useful when
- you find a bug in a certain routine in the target application and need to
- know which source file it is in so you can fix it!
-
-
- 1.0d19 Changes
-
- • Removed a bug that caused SourceBug to crash when it failed to read in
- the symbolics information for an application.
-
- • Removed a bug that caused SourceBug to crash when closing the browser window
- (it seemed to occur only if an inspector window was open).
-
- • The inspector now shows 32 bit rather than 24 bit addresses in the instance
- list pane. This is helpful when running in 32-bit addressing on a Macintosh
- with more than 16 meg of ram.
-
- • All object instances are now removed from the inspector when the target
- application terminates. Before, when relaunching an application, instances
- from previous executions of the target application remained in the inspector.
-
-
-
- 1.0d18 Changes
-
- • Fixed a bug that involved stepping into routines that caused a LoadSeg
- call to get executed.
-
- • Fixed a bug that limited the "Find Code for Selection" command to work
- only when the target application was running.
-
-
-
- 1.0d16/1.0d17 Changes
-
- • Changed the icon to a picture of a SourceBug. Since the application signature
- has not changed, you may have to rebuild your desktop to see it.
- Throw away old versions of MikesBug to avoid Desktop Manager confusion.
-
- • Added support for the "-model far" Linker option. This includes:
- 1) class ids can now be 4 bytes instead of 2 bytes (particularly
- important in the inspector)
- 2) the %_MethTables segment is in a different format
- 3) Stepping over _LoadSeg calls when "stepping into" is a little different
- Inspector support has not yet been tested under "-model far".
-
- • SourceBug now checks source file modification dates. If it can't find a
- source file with the same modification date as in the Sym file, it asks
- the user to locate it. This is particularly helpful if you have multiple
- versions of your application or MacApp on your disk.
-
- • Breakpoints can be set and cleared by clicking on the side of a code view.
- The "Set Breakpoint" and "Clear Breakpoint" menu items are gone.
-
- • Added support for evaluating floating point types.
-
- • Added support for evaluating constants.
-
- • Added the "Set Breakpoint at Failure" feature.
-
- • Added support for evaluating fields of a record within a pascal WITH statement
-
- • Added a real About Box.
-
- • Fixed some bugs that resulted in "???" being displayed as the top routine
- in the stack crawl.
-
- • Fixed a bug that caused the evaluation of pascal VAR parameters to be
- inaccurate.
-
- • Added the "Evaluate…" feature.
-
- • Added the "Find Inherited" feature.
-
- • Fixed the bug that caused SourceBug to fail when launching the target application
- a second time.
-
- • SourceBug now sends an 'oapp' AppleEvent when sublaunching the target application,
- if the target application has the "isHighLevelEventAware" flag set in its
- 'SIZE' resource.
-
- • Menu commands such as "Step" are now sent to the front code view, when
- a variable view or the registers window is in front.
-
- • When evaluating a TList or a descendant of TList, the elements of the list
- are now shown. Double-clicking allows evaluation of the elements of a TList.
-
- • The inspector window now uses TSizerViews.
-
- • Fixed a bug that caused SourceBug to be very unreliable, but occured only
- Under System 6.
-
-
- 1.0d15 Changes
-
- • Fixed a bug that caused MikesBug to crash when closing a window created
- by spawning a code view (option-clicking in a code view and dragging).
-
- • Fixed some bugs related to debugging non-MacApp applications.
-
- • Added the "Find Code For…" feature.
-
- • Removed "Page Setup" and "Print" menu items, since printing is not supported
-
-
-
- 1.0d11 - 1.0d14 Changes
-
- • MikesBug is now compatible with System 7.0b2. (Older versions would not
- work because the MultiFinder version number changed between 7.0b1 and 7.0b2.
- MikesBug now checks SysEnvirons to see if System 7 is running, and only
- checks the MultiFinder version if System 6 is running).
-
- • MikesBug will no longer run under System 7 virtual memory. A bug in the
- 7.0b2 Process Manager causes MikesBug to crash at the first breakpoint if
- VM is on. For a long time, MikesBug has been appearing to run under 7.0b1
- VM. However, it turns out that the 7.0b1 Process Manager has a similar bug
- that was causing the Mac to stay in supervisor mode after hitting the first
- breakpoint! Strangely, the System was able to operate in this state, and
- caused only occasional problems that, until now, I was unable to attribute
- to the Process Manager. MikesBug now refuses to run if VM is on.
- VM support will be reenabled when a new version of System 7 is released
- that supports debugging under VM.
-
- • The link map is no longer used by the debugger, so you
- need not generate a link map when you compile your program.
-
- • Breakpoints can now be set and cleared by selecting cells
- in a TGridView along the side of a code view. Multiple
- breakpoints can be selected by clicking while holding down
- the Shift or Command modifier keys.
-
- • There is now a "Clear All BreakPoints" command.
-
- • The disassembler now displays offsets relative to the beginning
- of the routine you are viewing and now shows routine names for
- BSR and JSR instructions.
-
- • Windows now behave a little nicer when multiple monitors are installed.
- If you drag the main browser window to a different monitor, the debugger
- will "live" in that monitor, that is, all new windows will come up in that
- monitor.
-
- • There have also been many internal changes that might not be visible to
- the user. A great deal of code has been rewritten to remove spaghetti and
- make the debugger more maintainable and extensible.
-
-
-
-
- Known Problems
-
- • Support for 32-Bit Everything will probably break in the near future, since
- there may be changes in its implementation. SourceBug currently works with
- the MPW 3.2b6 implementation of 32-Bit everything.
-
- • Evaluation of certain types are not yet implemented.
-
- • When viewing the source for the main PROGRAM module of an application
- written in Pascal (not MacApp), the entire file is displayed, including all
- pascal procedures and functions declared in the PROGRAM scope. This makes
- it difficult to locate the beginning of the main PROGRAM module, so
- it might make sense to display only the source between the BEGIN and
- END statements for the main PROGRAM module.
-
- • Under System 7.0b4, the target application may not receive activate
- events, causing the front window in the target application not to be active.
- In MacApp, this may result in gTarget not being set to the main view of the
- front window. This does not happen under System 6 or System 7.0b5.
-
- • The disassembler does not show routine names for JSR and JMP instructions
- if the target application was built using the "-model far" linker option.
-
- • Variable views are not always updated properly when their size changes
- (such as when they are changed to "Out of scope").
-
- • SourceBug does not check for the existence of a low-level debugger such as
- MacsBug or TMON before performing the "Enter low-level debugger" command.
-
- • The stack crawl does not show the name of routines with no LINK/UNLK instructions,
- such as glue code.
-
- • SourceBug has not been tested with the "-wrap" linker option.
-
- • SourceBug sometimes inadvertantly steps into glue code (such as code for
- unsigned long multiplication) that the user did not intend to step into.
- It is unclear how to handle this, since the user may sometimes want to
- step into code that do not have symbolic information.
-
-